﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BiblioWeb.DataAccess;
using BiblioWebProyecto2013.Models;
using BiblioWebProyecto2013.ServiceLayer;

namespace BiblioWebProyecto2013.Controllers
{   //[Authorize]
    public class ReservarController : Controller
    {
        private ContextoBiblio db;
        private Operaciones operaciones;
        private ReservaRepo reservaRepo;
        private MaterialRepo materialRepo;

        public ReservarController()
        {
            this.db = new ContextoBiblio();
            this.operaciones = new Operaciones(db);
            this.reservaRepo = new ReservaRepo(db);
            this.materialRepo = new MaterialRepo(db);
        }

       

        //
        // GET: /Material/Details/5

        public ActionResult Detalle(int id = 0)
        {

            Material material = this.materialRepo.Obtener(id);
            if (material == null)
            {
                return HttpNotFound();
            }
            return View(material);
        }


        public ActionResult Reservar(int idMaterial)
        {
            String userNameActual = User.Identity.Name;

            
            if (this.operaciones.ReservaValida(userNameActual))
            {
                this.operaciones.RealizarReserva(userNameActual, idMaterial);
                return RedirectToAction("Reservar", "Reserva");


            }
            else
            {
                //aca tendria que informar que no puede reservar
                return RedirectToAction("Index");
            
            }
            
        
        }
     //
        // GET: /Reservar/

        public ActionResult Index()
        {
            var materiales = this.materialRepo.Todos();
            return View(materiales.ToList());     
        }

        public ActionResult CancelarReserva(int idReserva)
        {
            String userNameActual = User.Identity.Name;
            this.operaciones.CancelarReserva(userNameActual, idReserva);
            return RedirectToAction("Reservar", "Reserva");
        
        }

        public ActionResult ListarReservas(String userName)
        {
            throw new NotImplementedException();
        
        }


     
    }
}